package org.x.user.entity;

import lombok.Data;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.IdType;
import java.util.Date;
import io.swagger.v3.oas.annotations.media.Schema;

/**
 * 菜单实体类
 *
 * @author 夏包包
 * @date 2025-03-08 13:39:03
 */
@Data
@TableName("sys_menus")
public class SysMenu {

    /**
     * 菜单ID:主键，唯一标识
     */
    @TableId(type = IdType.ASSIGN_UUID)
    @Schema(description = "菜单ID:主键，唯一标识")
    private String id;

    /**
     * 菜单名称:必填项
     */
    @Schema(description = "菜单名称:必填项")
    private String menuName;

    /**
     * 父菜单ID:可选项，标识父菜单
     */
    @Schema(description = "父菜单ID:可选项，标识父菜单")
    private String parentId;

    /**
     * 菜单URL:可选项，菜单对应的URL
     */
    @Schema(description = "菜单URL:可选项，菜单对应的URL")
    private String menuUrl;

    /**
     * 菜单描述:可选项，菜单的描述信息
     */
    @Schema(description = "菜单描述:可选项，菜单的描述信息")
    private String menuDesc;

    /**
     * 创建人:可选项，创建菜单的用户
     */
    @Schema(description = "创建人:可选项，创建菜单的用户")
    private String createBy;

    /**
     * 创建时间:可选项，菜单创建时间
     */
    @Schema(description = "创建时间:可选项，菜单创建时间")
    private Date createTime;

    /**
     * 修改人:可选项，修改菜单的用户
     */
    @Schema(description = "修改人:可选项，修改菜单的用户")
    private String updateBy;

    /**
     * 修改时间:可选项，菜单修改时间
     */
    @Schema(description = "修改时间:可选项，菜单修改时间")
    private Date updateTime;

    /**
     * 租户ID:可选项，菜单所属租户
     */
    @Schema(description = "租户ID:可选项，菜单所属租户")
    private String tenantId;

    /**
     * 菜单类型:可选项，菜单类型（DIR、MENU、BUTTON）
     */
    @Schema(description = "菜单类型:可选项，菜单类型（DIR、MENU、BUTTON）")
    private String menuType;

    /**
     * 前端路由路径:可选项，菜单对应的前端路由路径
     */
    @Schema(description = "前端路由路径:可选项，菜单对应的前端路由路径")
    private String path;

    /**
     * 前端组件:可选项，菜单对应的前端组件
     */
    @Schema(description = "前端组件:可选项，菜单对应的前端组件")
    private String component;

    /**
     * 菜单图标:可选项，菜单的图标
     */
    @Schema(description = "菜单图标:可选项，菜单的图标")
    private String icon;

    /**
     * 关联权限:可选项，关联的权限ID
     */
    @Schema(description = "关联权限:可选项，关联的权限ID")
    private String permId;

    /**
     * 排序:可选项，菜单排序值
     */
    @Schema(description = "排序:可选项，菜单排序值")
    private Integer sort;

    /**
     * 是否隐藏:可选项，标识菜单是否隐藏
     */
    @Schema(description = "是否隐藏:可选项，标识菜单是否隐藏")
    private Boolean hidden;
}
